C# httpwebrequest 抓取html乱码("gb2312")

2020年4月8日 Jerry 7827 2020年4月8日

       C# 使用httpwebrequest抓取一个网页,返回一直乱码?修改编码格式也没有解决,看看怎么搞!

问题:

       C# httpwebrequest 抓取网页返回乱码。

代码:

public void GetHtml()
{
    try
    {
        string url = "http://kaijiang.500.com";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Stream stream;
        StreamReader sr;

        stream = response.GetResponseStream();
        sr = new StreamReader(stream, Encoding.UTF8);

        string strHtml = sr.ReadToEnd();

        stream.Close();
        sr.Close();
        Console.WriteLine(strHtml);
    }
    catch (WebException e)
    {
        e.StackTrace.ToString();
        return;
    }
}

返回乱码:

开始解决:

1、那肯定是编码不对啊,改一下就完了呗。

       看下网页的编码,是 gb2312

       而代码里面的编码是UTF8,于是把编码改成了gb2312:

sr = new StreamReader(stream, Encoding.GetEncoding("gb2312"));

       然而并没有解决啊!!!!!换成了另外一种乱码

       接下来就开始尝试各种编码。。。

       。。。。

       。。。。

        都没有解决,最后搜到了一种处理方法,直接上代码:

 public void GetHtml()
{
    try
    {
        string url = "http://kaijiang.500.com";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Stream stream;
        StreamReader sr;

        if (response.ContentEncoding == "gzip")
        {
            stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
            sr = new StreamReader(stream, Encoding.GetEncoding("gb2312"));
        }
        else 
        {
            stream = response.GetResponseStream();
            sr = new StreamReader(stream, Encoding.UTF8);
        }

        string strHtml = sr.ReadToEnd();

        stream.Close();
        sr.Close();
        Console.WriteLine(strHtml);
    }
    catch (WebException e)
    {
        e.StackTrace.ToString();
        return;
    }
}


原创文章,转载请注明出处: https://jerrycoding.com/article/csharp-encoding

微信
jerry微信赞助
支付宝
jerry支付宝赞助

您尚未登录,暂时无法评论。请先 登录 或者 注册

1 人参与 | 1 条评论

  • lxbfYeaa:
    2024年8月14日

    e